import {createRouter, createWebHistory} from 'vue-router'
import HomeView from "@/views/admin/HomeView.vue";
import IndexView from "@/views/admin/IndexView.vue";
import AdminView from "@/views/admin/AdminView.vue";
import CategoryView from "@/views/admin/CategoryView.vue";
import GoodsView from "@/views/admin/GoodsView.vue";
import OrderView from "@/views/admin/OrderView.vue";
import UserView from "@/views/admin/UserView.vue";
import LoginView from "@/views/admin/LoginView.vue";
import {useTokenStore} from "@/stores/token.js";
import UserLoginView from "@/views/user/LoginView.vue";
import UserHomeView from "@/views/user/HomeView.vue";
import UserIndexView from "@/views/user/IndexView.vue";
import SearchView from "@/views/user/SearchView.vue";
import RegView from "@/views/user/RegView.vue";
import GoodsView1 from "@/views/user/GoodsView.vue";
import CartView from "@/views/user/CartView.vue";
import CreateOrderView from "@/views/user/CreateOrderView.vue";
import CenterView from "@/views/user/CenterView.vue";
import AddrListView from "@/views/user/center/AddrListView.vue";
import CollectListView from "@/views/user/center/CollectListView.vue";
import InfoView from "@/views/user/center/InfoView.vue";
import OrderListView from "@/views/user/center/OrderListView.vue";
import PasswordView from "@/views/user/center/PasswordView.vue";
import RechargeView from "@/views/user/center/RechargeView.vue";
import PayView from "@/views/user/PayView.vue";
import CommentView from "@/views/user/CommentView.vue";

const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            name: 'user_home',
            component: UserHomeView,
            redirect: "/user/index",
            children: [
                {
                    path: '/user/login',
                    name: 'user_login',
                    component: UserLoginView,
                }, {
                    path: '/user/index',
                    name: 'user_index',
                    component: UserIndexView,
                }, {
                    path: '/user/search/:categoryId?/:keyword?',
                    name: 'user_search',
                    component: SearchView,
                    props: true,
                }, {
                    path: '/user/reg',
                    name: 'user_reg',
                    component: RegView,
                }, {
                    path: '/user/goods',
                    name: 'user_goods',
                    component: GoodsView1,
                }, {
                    path: '/user/cart',
                    name: 'user_cart',
                    component: CartView,
                }, {
                    path: '/user/pay',
                    name: 'user_pay',
                    component: PayView,
                }, {
                    path: '/user/createOrder',
                    name: 'user_createOrder',
                    component: CreateOrderView,
                }, {
                    path: '/user/comment',
                    name: 'user_comment',
                    component: CommentView,
                }, {
                    path: '/user/center',
                    name: 'user_center',
                    component: CenterView,
                    redirect: '/user/info',
                    children: [
                        {
                            path: '/user/addrList',
                            name: 'user_addrList',
                            component: AddrListView,
                        }, {
                            path: '/user/collectList',
                            name: 'user_collectList',
                            component: CollectListView,
                        }, {
                            path: '/user/info',
                            name: 'user_info',
                            component: InfoView,
                        }, {
                            path: '/user/orderList',
                            name: 'user_orderList',
                            component: OrderListView,
                        }, {
                            path: '/user/password',
                            name: 'user_password',
                            component: PasswordView,
                        }, {
                            path: '/user/recharge',
                            name: 'user_recharge',
                            component: RechargeView,
                        },
                    ]
                }
            ]
        }, {
            path: '/admin/login',
            name: 'admin_login',
            component: LoginView,
        }, {
            path: '/admin/home',
            name: 'admin_home',
            component: HomeView,
            redirect: "/admin/index",
            children: [
                {
                    path: '/admin/index',
                    name: 'admin_index',
                    component: IndexView,
                }, {
                    path: '/admin/admin',
                    name: 'admin_admin',
                    component: AdminView,
                }, {
                    path: '/admin/category',
                    name: 'admin_category',
                    component: CategoryView,
                }, {
                    path: '/admin/goods',
                    name: 'admin_goods',
                    component: GoodsView,
                }, {
                    path: '/admin/order',
                    name: 'admin_order',
                    component: OrderView,
                }, {
                    path: '/admin/user',
                    name: 'admin_user',
                    component: UserView,
                }
            ]
        },
        {
            path: '/user/login',
            name: 'user_login',
            component: UserLoginView,
        },
    ]
})
//导航守卫,避免在登录页面直接访问里边的页面
//to 要访问的位置  from 起始位置
router.beforeEach((to, from) => {
    console.log(router.currentRoute.value.path)//刚开始进入路径为/
    //TODO 还对其他页面进行放行（比如--前台首页，搜索页，详情页，用户登录/注册页）
    if (to.path === "/admin/login" ||
        to.path === "/user/login" ||
        to.path === "/" ||
        to.path === "/user/index" ||
        to.path === "/user/reg" ||
        to.path === "/user/goods" ||
        to.path.startsWith("/user/search")) {
        return true;
    } else {//判断是否有token 有-放行  没有-跳转到登录页
        const tokenStore = useTokenStore();
        if (tokenStore.tokenStr != null) {
            return true;
        } else {
            //判断跳转到管理员登录页还是用户登录页
            if (to.path.startsWith("/admin")) {
                return '/admin/login';
            } else {
                return '/user/login';
            }
        }
    }
})
export default router
